// pages/register/register.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    sexArray: ['男', '女'],
    sexIndex: null,
    nationArray: ['汉族', '蒙古族', '回族', '藏族', '维吾尔族', '苗族', '彝族', '壮族', '布依族', '朝鲜族', '满族', '侗族', '瑶族', '白族', '土家族', '哈尼族', '哈萨克族', '傣族', '黎族', '傈僳族', '佤族', '畲族', '高山族', '拉祜族', '水族', '东乡族', '纳西族', '景颇族', '柯尔克孜族', '土族', '达斡尔族', '仫佬族', '羌族', '布朗族', '撒拉族', '毛南族', '仡佬族', '锡伯族', '阿昌族', '普米族', '塔吉克族', '怒族', '乌孜别克族', '俄罗斯族', '鄂温克族', '德昂族', '保安族', '裕固族', '京族', '塔塔尔族', '独龙族', '鄂伦春族', '赫哲族', '门巴族', '珞巴族', '基诺族'],
    nationIndex: null,
    date: '',
    identityArray: ['第十一届政协委员','第十届政协委员','第九届政协委员',
    '联络员','工作人员'],
    identityIndex: null,
    typeArray: [
      '中国共产党',
      '中国国民党革命委员会',
      '中国民主同盟',
      '中国民主建国会',
      '中国民主促进会',
      '中国农工民主党',
      '中国致公党',
      '九三学社',
      '台湾民主自治同盟',
      '无党派人士',
      '中国共产主义青年团',
      '中华全国总工会',
      '中华全国妇女联合会',
      '中华全国青年联合会',
      '中华全国工商业联合会',
      '科学技术界',
      '社会科学界',
      '经济界',
      '农业界',
      '教育界',
      '体育界',
      '新闻出版界',
      '医药卫生界',
      '对外友好界',
      '社会福利和社会保障界',
      '文化艺术界',
      '科学技术协会',
      '少数民族界',
      '宗教界',
      '台湾同胞联谊会',
      '港澳同胞',
      '特邀香港人士',
      '特邀澳门人士',
      '特别邀请人士',
      '环境资源界'
    ],
    typeIndex: null,
    areaArray: ['张家畔街道', '东坑镇', '周河镇', '天赐湾镇', '镇靖镇', '海则滩镇', '中山涧镇', '龙洲镇', '黄蒿界镇', '红墩界镇', '王渠则镇', '杨米涧镇', '杨桥畔镇', '席麻湾镇', '宁条梁镇', '高家堡镇', '新桥镇'],
    areaIndex: null,
    reserveArray: ['XXX'],
    reserveIndex: 0,
    showModal: true,
    phoneNumber: '',
    name: '',
    company: '',
    password: '',
    confirmPassword: '',
    // 添加密码显示控制变量
    showPassword: false,
    showConfirmPassword: false,
    address:null,
    postalCode:null
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getPhoneNumber()
  },


  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },


  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },
  // 添加切换密码可见性的方法
  togglePasswordVisibility: function() {
    this.setData({
      showPassword: !this.data.showPassword
    });
  },

// 添加切换确认密码可见性的方法
toggleConfirmPasswordVisibility: function() {
    this.setData({
      showConfirmPassword: !this.data.showConfirmPassword
    });
},
  onGetPhoneNumber(e) {
    const app = getApp()
    if (e.detail.errMsg === 'getPhoneNumber:ok') {
      const phoneCode = e.detail.code; // 正确的手机号code
      app.userRequest.getPhone(phoneCode).then(res2 => {
        this.setData({
          phoneNumber: res2.data.data.phone_info.phoneNumber
        })
      })
    } else {
      console.log('用户拒绝授权')
    }
  },

  bindSexChange(e) {
    this.setData({
      sexIndex: e.detail.value
    })
  },

  bindNationChange(e) {
    this.setData({
      nationIndex: e.detail.value
    })
  },

  bindDateChange(e) {
    this.setData({
      date: e.detail.value
    })
  },

  bindIdentityChange(e) {
    console.log('picker发送选择改变，携带值为', e.detail.value)
    this.setData({
      identityIndex: e.detail.value
    })
  },

  bindTypeChange(e) {
    this.setData({
      typeIndex: e.detail.value
    })
  },

  bindAreaChange(e) {
    this.setData({
      areaIndex: e.detail.value
    })
  },

  bindReserveChange(e) {
    this.setData({
      reserveIndex: e.detail.value
    })
  },

  getCurrentIdentity() {
    return this.data.identityArray[this.data.identityIndex]
  },

  getPhoneNumber(e) {
    // console.log(e)
    // console.log(e.detail.code) // 动态令牌
    // console.log(e.detail.errMsg) // 回调信息（成功失败都会返回）
    // console.log(e.detail.errno) // 错误码（失败时返回）
  },

  submitForm() {
    const {
      name,
      phoneNumber,
      company,
      password,
      confirmPassword,
      sexIndex,
      sexArray,
      nationIndex,
      nationArray,
      identityIndex,
      identityArray,
      typeIndex,
      typeArray,
      areaIndex,
      areaArray,
      date,
      reserve,
      address,
      postalCode
    } = this.data;

    // 必填项验证（网页8表单验证示例[8](@ref)）
    if (!name) {
      wx.showToast({
        title: '请输入姓名',
        icon: 'none'
      });
      return;
    }
    if (sexIndex === null) {
      wx.showToast({
        title: '请选择性别',
        icon: 'none'
      });
      return;
    }
    if (!phoneNumber) {
      wx.showToast({
        title: '请获取手机号',
        icon: 'none'
      });
      return;
    }
    if (!company) {
      wx.showToast({
        title: '请输入所属单位',
        icon: 'none'
      });
      return;
    }

    if(!address) { 
      wx.showToast({ 
        title: '请输入地址', 
        icon: 'none' 
      }); 
      return; 
    }
    if(!postalCode) { 
      wx.showToast({ 
        title: '请输入邮政编码', 
        icon: 'none' 
      }); 
      return; 
    }
    if(!date){
      wx.showToast({
        title: '请输入生日',
        icon:'none'
      })
      return
    }
    if(nationIndex==null){
       wx.showToast({
         title: '请选择民族',
         icon:'none'
       })
       return
    }
    if (!password || !confirmPassword) {
      wx.showToast({
        title: '请输入密码',
        icon: 'none'
      });
      return;
    }
    if (password !== confirmPassword) {
      wx.showToast({
        title: '两次输入的密码不一致',
        icon: 'none'
      });
      return;
    }

    // 在微信登录前添加确认弹窗
    wx.showModal({
      title: '提示',
      content: '请确认信息无误，审核通过后可通过此微信号登录！',
      success: (res) => {
        if (res.confirm) {
          // 微信登录获取code
          wx.login({
            success: (res) => {
              if (!res.code) {
                wx.showToast({
                  title: '登录凭证获取失败',
                  icon: 'none'
                });
                return;
              }

              // 组装用户数据对象
              const userDTO = {
                uname: name,
                gender: sexArray[sexIndex],
                ethnicity: nationIndex !== null ? nationArray[nationIndex] : '',
                identity: identityIndex !== null ? identityArray[identityIndex] : '',
                affiliation: typeIndex !== null ? typeArray[typeIndex] : '',
                region: areaIndex !== null ? areaArray[areaIndex] : '',
                birthDate: date,
                phone: phoneNumber,
                unit: company,
                password,
                code: res.code,
                reservedInfo:reserve,
                address: address,
                postalCode: postalCode
              };
              console.log(res.code)

              // 调用注册接口（网页2网络请求示例[2](@ref)）
              const app = getApp();
              app.userRequest.userRegister(userDTO)
                .then(res => {console.log(res.data)
                  if (res.data.code === 400) {
                    wx.showToast({
                      title: res.data.msg,
                      icon: 'none'
                    });
                    return;
                  }

                  // 注册成功处理（网页4结果展示逻辑[4](@ref)）
                  wx.showToast({
                    title: res.data.data,
                    icon: 'none',
                    duration: 2000,
                    success: () => {
                      setTimeout(() => {
                        wx.navigateBack({
                          delta: 1
                        });
                      }, 1500);
                    },
                    fail: (err) => {
                      console.error('弹窗显示失败', err);
                    }
                  });
                })
                .catch(err => {
                  console.error('注册请求失败:', err);
                  wx.showToast({
                    title: '注册失败，请重试',
                    icon: 'none'
                  });
                });
            },
            fail: (err) => {
              console.error('微信登录失败:', err);
              wx.showToast({
                title: '登录失败，请重试',
                icon: 'none'
              });
            }
          })
        } else if (res.cancel) {
          // 用户点击取消，不执行后续操作
          return;
        }
      }
    });
  }
})